<?php
/**
 * Вывид часит елмента Zend_Form_Element_.*
 * <code>
 *   $login = $this->field($this->form->login);
 *   echo $login->label();
 *   echo $login->tag();
 *   echo $login->des();
 *   echo $login->error();
 * </code>
 * 
 * @author nrnwest@gmail.com
 * @uses viewHelper Arm_View_Helper
 */
class Arm_View_Helper_Field extends Zend_View_Helper_Abstract
{
    /**
     * Zend_Form_Element
     * @var Zend_Form_Element
     */
    private $_element;
    
    /**
     * Вернет обьект своего класса, который содержит методы
     * - label() вывод метки
     * - tag()   вывод html кода поля
     * - des()   вывод описания
     * - error() выод ошибки если есть
     * 
     * Если поле по определению не имеет того или иного значения будет брошено исключение, ошибка.
     * 
     * @param Zend_Form_Element $element
     * @return Arm_View_Helper_Field
     */
    public function field(Zend_Form_Element $element = null)
    {
        if($element !== null) {
            $this->_element = $element;
        }
        return $this;
    }
    
    /**
     * Вернет label
     * 
     * @return string
     */
    public function label()
    {
        $ld = $this->_element->getDecorator('label');  
        $ld->setOption('tag', null);    
        return $this->_element->renderLabel();
    }
    
    /**
     * Вернет html код элемента формы
     * 
     * @return string
     */
    public function tag()
    {
       return $this->_element->renderViewHelper();
    }
    
    /**
     * Вернет описание элеменат формы
     * 
     * @return string
     */
    public function des()
    {
       return $this->_element->renderDescription();
    }
    
    /**
     * Вернет ошибку(и) в виде сформированного html
     * 
     * @return string
     */
    public function error()
    {
       return $this->_element->renderErrors();
    }
}